package cz.vse.adventura.po1715.xkosd00_kostka.hra;

import static cz.vse.adventura.po1715.xkosd00_kostka.hra.Texty.*;


/*******************************************************************************
 * Instance třídy {@code PříkazKonec} představují příkazy sloužící k registraci
 * hráče na recepci a povolení vstupu do výtahu.
 * @author    Dominik KOSTKA
 * @version   1.0
 */
public class PrikazAbraka extends APrikaz
{
//== KONSTANTNÍ ATRIBUTY TŘÍDY =================================================
//== PROMĚNNÉ ATRIBUTY TŘÍDY ===================================================
//== STATICKÝ INICIALIZAČNÍ BLOK - STATICKÝ KONSTRUKTOR ========================
//== KONSTANTNÍ ATRIBUTY INSTANCÍ ==============================================
//== PROMĚNNÉ ATRIBUTY INSTANCÍ ================================================
//== PŘÍSTUPOVÉ METODY VLASTNOSTÍ TŘÍDY ========================================
//== OSTATNÍ NESOUKROMÉ METODY TŘÍDY ===========================================

//##############################################################################
//== KONSTRUKTORY A TOVÁRNÍ METODY =============================================

    /***************************************************************************
     *
     */
    public PrikazAbraka()
    {
        super( pABRAKA,
               "Kouzelný příkaz." );
    }



//== ABSTRAKTNÍ METODY =========================================================
//== PŘÍSTUPOVÉ METODY VLASTNOSTÍ INSTANCÍ =====================================
//== OSTATNÍ NESOUKROMÉ METODY INSTANCÍ ========================================

    /***************************************************************************
     * Kouzelný příkaz, který zpřístupňuje nového souseda nebo vymaže batoh
     * hráče a přidá mu do batohu předmět Magie.
     * @param  parametry XNAME nebo ABRAKADABRA
     * @return Zprava textový řetězec
     */
    @Override
    public String execute( String... parametry )
    {
        if(parametry.length == 0) return zCIL_NEZADAN;

        Mistnost am = Mistnost.getAktuálníMístnost();

        if(parametry[0].equalsIgnoreCase(XNAME)
            && am == Mistnost.Hala){
            Mistnost zkratka = Mistnost.getMístnost(ZKRATKA);
            am.setSoused(zkratka);
            return NOVÝ_SOUSED;
        }

        if(parametry[0].equalsIgnoreCase(pABRAKA)
            && am == Mistnost.Zkratka){
            Batoh batoh = Batoh.getBatoh();
            Batoh.inicializuj();
            Predmet magie = new Predmet(MAGIE);
            batoh.pridej(magie);
            am.setSoused(Mistnost.Koupelna2);
            return NOVÝ_PŘEDMĚT + MAGIE;
        }
        
        return NENÍ_PARAMETR;
    }


//== SOUKROMÉ A POMOCNÉ METODY TŘÍDY ===========================================
//== SOUKROMÉ A POMOCNÉ METODY INSTANCÍ ========================================
//== INTERNÍ DATOVÉ TYPY =======================================================
//== TESTOVACÍ METODY A TŘÍDY ==================================================
//
//    /***************************************************************************
//     * Testovací metoda.
//     */
//    public static void test()
//    {
//        PříkazKonec inst = new PříkazKonec();
//    }
//    /** @param args Parametry příkazového řádku - nepoužívané. */
//    public static void main( String[] args )  {  test();  }
}
